package cn.ahaiahaixx.supemarketonline.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import cn.ahaiahaixx.supemarketonline.entity.TbTokenInfo;
import cn.ahaiahaixx.supemarketonline.entity.TbUser;

/**
 * 数据访问层
 * 
 * @author Aiden Pearce
 *
 */
@Mapper
public interface TbUserDAO {

  /**
   * 按照用户名查询用户信息
   * 
   * @param user 用户信息
   * @return 用户信息
   * @throws Exception 处理发生错误
   */
  TbUser queryByKeyName(TbUser user) throws Exception;

  /**
   * 按照昵称查询用户信息
   * 
   * @param user 用户信息
   * @return 用户信息
   * @throws Exception 处理发生错误
   */
  TbUser queryByKeyNick(TbUser user) throws Exception;

  /**
   * 按照主键查询用户信息
   * 
   * @param user 用户信息
   * @return 用户信息
   * @throws Exception 处理发生错误
   */
  TbUser queryByKey(TbUser user) throws Exception;

  /**
   * 分页查询
   */
  List<TbUser> queryAll() throws Exception;

  /**
   * 用户添加
   * 
   * @param tbType
   * @return
   * @throws Exception
   */
  int useradd(TbUser user) throws Exception;

  /**
   * 用户修改
   * 
   * @param tbType
   * @return
   * @throws Exception
   */
  int userupdate(TbUser user) throws Exception;

  /**
   * 管理员修改
   * 
   * @param tbType
   * @return
   * @throws Exception
   */
  int adminupdate(TbUser user) throws Exception;

  /**
   * 管理员删除或者反删除
   * 
   * @param tbType
   * @return
   * @throws Exception
   */
  int admindelete(TbUser user) throws Exception;

  /* Token相关=========================================== */
  /**
   * tokeinfo信息处理
   * 
   * @param tokenInfo token信息
   * @return 用户登录信息
   * @throws Exception 处理发生异常
   */
  TbUser queryTokenUser(TbTokenInfo tokenInfo) throws Exception;

  /**
   * 添加用户信息
   * 
   * @param tokenInfo token信息
   * @return 用户登录信息
   * @throws Exception 处理发生异常
   */
  int saveUserToken(TbTokenInfo tokenInfo) throws Exception;

  /**
   * 修改用户信息
   * 
   * @param tokenInfo token信息
   * @return 用户登录信息
   * @throws Exception 处理发生异常
   */
  int updateTokenUser(TbTokenInfo tokenInfo) throws Exception;

  /**
   * 删除用户信息
   * 
   * @param tokenInfo token信息
   * @return 用户登录信息
   * @throws Exception 处理发生异常
   */
  int deleteTokenUser(TbTokenInfo tokenInfo) throws Exception;
}
